package main

import (
	"fmt"

	_ "github.com/go-sql-driver/mysql-master"
	"github.com/jmoiron/sqlx"
)

// sqlx 使用
// 声明结构体
type user struct{
	ID int
	Name string
	Age int
}

// 定义全局变量数据库连接池db
var db *sqlx.DB  //是一个连接池
func initDB()(err error){
	// 数据库的信息
	dsn:="root:123@tcp(127.0.0.1:3306)/sql_test"
	// 连接数据库
	db,err =sqlx.Open("mysql",dsn)  //不会校验用户名和密码是否正确.  sql.Opne("数据库类型",数据库信息)
	if err!=nil{                   //dsn格式不正确的时候会报错
		return
	}
	err=db.Ping()  //这才是真正尝试连接数据库
	if err!=nil{
		return
	}
	// 设置数据库连接池的最大连接数
	db.SetMaxOpenConns(100)
	// 设置最大空闲连接数
	db.SetMaxIdleConns(10)
	return
}
func main(){
	err:=initDB()
	if err!=nil{
		fmt.Printf("init DB failed,err:%v\n",err)
		return
	}
	// 查询单条sql
	sqlStr1:=`select id,name,age from user where id =1;`
	var u user
	db.Get(&u,sqlStr1)
	fmt.Printf("u:%#v\n",u)
	// 查询多条sql
	var  userlist []user
	sqlStr2:=`select id,name,age from user;`
	err=db.Select(&userlist,sqlStr2)
	if err!=nil{
		fmt.Printf("select failed,err:%v\n",err)
		return
	}
	fmt.Printf("userlist:%#v\n",userlist)
}